#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int unval;
int gval = 100;

int main()
{
    printf("code addr: %p\n", main);
    printf("gval addr: %p\n", &gval);//变量地址
    printf("unval addr: %p\n", &unval);

    int *mem = (int*)malloc(10*sizeof(int));//堆区
    printf("heap add: %p\n", mem);


    int a,b,c;
    printf("stack addr : %p\n", &a);//栈区
    printf("stack addr : %p\n", &b);
    printf("stack addr : %p\n", &c);





  //  printf("我是一个进程, pid: %d, ppid: %d\n", getpid(), getppid());//父子进程的值是不一样的，但是地址却一样

  //  pid_t id = fork();
  //  if(id == 0)
  //  {
  //      // child子进程
  //      while(1)
  //      {
  //          printf("我是子进程, pid : %d, ppid : %d, gval: %d, &gval: %p\n", getpid(), getppid(), gval, &gval);
  //          gval++;
  //          sleep(1);
  //      }
  //  }
  //  else
  //  {
  //      //parent父进程
  //      while(1)
  //      {
  //          printf("我是父进程, pid : %d, ppid : %d, gval: %d, &gval: %p\n", getpid(), getppid(), gval, &gval);
  //          sleep(1);
  //      }
  //  }
}

